//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.HashMap;
//
//class Solution {
//    public int[] twoSum(int[] nums, int target) {
//        HashMap<Integer,Integer> hash=new HashMap<>();
//
//
//        for(int i=0;i<nums.length;i++){
//            int n=nums[i];
//            int tmp=target-n;
//            int ret=hash.getOrDefault(tmp,-1);
//            if(ret!=-1){
//                return new int[]{i,ret};
//
//            }
//
//            ArrayList arrayList=new ArrayList();
//            arrayList.get
//            hash.put(nums[i],i);
//
//        }
//        return null;
//
//
//
//
//
//
//    }
//}
//
//class Solution1 {
//    public boolean CheckPermutation(String s1, String s2) {
//
//        char[] arr1=s1.toCharArray();
//        char[] arr2=s2.toCharArray();
//        int n1=arr1.length;
//        int n2=arr2.length;
//        if(n1!=n2) return false;
//
//        int[] count=new int[26];
//        int c=0;
//
//        for(int i=0;i<n1;i++){
//            c=arr1[i];
//            count[c-'a']++;
//        }
//        int i=0;
//        while(i<n2){
//            c=arr2[i++];
//            count[c-'a']--;
//            if(count[c-'a']<0) return false;
//            n1--;
//
//
//        }
//        if(n1==0) return true;
//        return false;
//
//    }
//}
//
//
//class Solution2 {
//    public boolean containsNearbyDuplicate(int[] nums, int k) {
//        HashMap<Integer,Integer> hash=new HashMap<>();
//        for(int i=0;i<nums.length;i++){
//            int num=nums[i];
//            int n=hash.getOrDefault(num,-1);
//            if(n!=-1){
//                if((i-n<=k)||(i-n>=-k)) return true;
//            }
//            hash.put(num,i);
//        }
//        return false;
//
//
//    }
//}


import java.util.ArrayList;
import java.util.List;

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> list=new ArrayList<>();
        for(int i=0;i<strs.length;i++){
            char[] arr=strs[i].toCharArray();
            List<String> str=new ArrayList<>();
            int flag=0;
            for(int j=0;j<list.size();j++){
                String str1=list.get(j).get(0);
                char[] arr1=str1.toCharArray();
                if(arr1.length!=arr.length) continue;
                if(!func(arr,arr1)) continue;

                str1.add(strs[i]);
                flag=1;
                break;

            }
            if(flag==0){
                str.add(strs[i]);
                list.add(str);
            }


        }
        return list;

    }

    public boolean func(int[] arr,int[] arr1){
        int[] hash=new int[26];
        for(char c:arr) hash[c-'a']++;
        for(char c:arr1){
            hash[c='a']--;
            if(hash[c-'a']<0) return true;
        }
        return false;
    }
}